package Behavioral.Observer.listener;

import java.util.ArrayList;
import java.util.List;

//事件源：目标/被观察者
public abstract class EventSource {

//    监听器：观察者
    // 监听器列表，监听器的注册 加入此列表
    protected List<MyEventListener> listenerList = new ArrayList<MyEventListener>();

//    注册监听器
    public void addMyEventListener(MyEventListener listener){
        listenerList.add(listener);
    }

//    移除监听器
    public void removeMyEventListener(MyEventListener listener){
        listenerList.remove(listener);
    }

//    事件对象：观察者与目标/被观察者之间通信的对象
//    发布事件
    public void notifyListenerEvent(MyEventObject object){
        for(MyEventListener listener:listenerList){
//            订阅事件，并做出响应
            listener.handlerEvent(object);
        }
    }

}
